package com.sourcetrip.raw.adt.interfaces;

/**
 * @author: ZhouBert
 * @date: 2020/11/20
 * @description:	栈提供的接口
 * 【设计】
 * 栈可以基于 动态数组/链表 进行的封装，此时有两个方案：
 * 1.myStack extends MyAbstractList
 * 但是此时会导致向外暴露 MyAbstractList 的接口；
 * 2.使用组合，让 myStack 拥有一个 MyAbstractList 的变量；
 * 这个解决方案是比较规范的
 */
public interface MyStackInterfaces<E> {

	int size();

	boolean isEmpty();

	/**
	 * 压栈
	 * @param element
	 */
	void push(E element);

	/**
	 * 出栈
	 * @return
	 */
	E pop();

	/**
	 * 返回栈顶元素
	 * @return
	 */
	E peek();
}
